import java.util.ArrayList;
import java.util.List;

/**
 * 给你一个整数 n ，找出从 1 到 n 各个整数的 Fizz Buzz 表示，并用字符串数组 answer（下标从 1 开始）返回结果，其中：
 * <p>
 * answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
 * answer[i] == "Fizz" 如果 i 是 3 的倍数。
 * answer[i] == "Buzz" 如果 i 是 5 的倍数。
 * answer[i] == i （以字符串形式）如果上述条件全不满足。
 */
public class Solution {
    public List<String> fizzBuzz(int n) {
        List<String> result = new ArrayList<>();

        int cur = 1;
        int fizz = 1;   //3
        int buzz = 1;   //5

        while (cur <= n) {
            if (fizz == 3) {
                fizz = 1;
                if (buzz == 5) {
                    result.add("FizzBuzz");
                    buzz = 1;
                } else {
                    result.add("Fizz");
                    buzz++;
                }
            } else {
                fizz++;
                if (buzz == 5) {
                    result.add("Buzz");
                    buzz = 1;
                } else {
                    result.add(String.valueOf(cur));
                    buzz++;
                }
            }
            cur++;
        }

        return result;
    }

}